#include <Wire.h>
#include <WiFiUdp.h>
#include <ESP8266WiFi.h>
#include <MPU6050.h>

MPU6050 mpu;
WiFiUDP udp;

const char* ssid = "DATA";
const char* password = "1234567890";
const char* apIP = "192.168.4.1";

void setup() {
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("连接到WiFi...");

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("连接中...");
  }
  Serial.println("已连接到WiFi");

  Wire.begin();  // 初始化Wire库

  // 初始化MPU6050传感器
  mpu.initialize();
  Serial.println("MPU6050初始化完成");

  // 使用校准值
  mpu.setXAccelOffset(-38);
  mpu.setYAccelOffset(-3721);
  mpu.setZAccelOffset(684);
  mpu.setXGyroOffset(0);
  mpu.setYGyroOffset(0);
  mpu.setZGyroOffset(0);
}

void loop() {
  int16_t ax, ay, az;
  mpu.getAcceleration(&ax, &ay, &az);

  Serial.print("发送端发送姿态数据：");
  Serial.print("加速度数据：");
  Serial.print(ax);
  Serial.print(", ");
  Serial.print(ay);
  Serial.print(", ");
  Serial.println(az);

  sendSensorDataToAP(ax, ay, az);

  delay(100);
}

void sendSensorDataToAP(int16_t ax, int16_t ay, int16_t az) {
  udp.beginPacket(apIP, 1234);
  udp.write((uint8_t*)&ax, sizeof(ax));
  udp.write((uint8_t*)&ay, sizeof(ay));
  udp.write((uint8_t*)&az, sizeof(az));
  udp.endPacket();
  Serial.println("数据发送成功");
}
